package gui;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.ListSelectionModel;

import utility.Record;

import business.TypeEnseignementBL;
import business.TypeHeureBL;

public class PanelEnseignementUI extends AbstractParamPane implements ActionListener {
	
	private TypeEnseignementBL typeEns;
	private JButton ajouter, modifier, supprimer;
	private JList list;
	
	public PanelEnseignementUI() {
	
		//Create and populate the panel.
        setLayout(new BorderLayout());
		setBorder(BorderFactory.createCompoundBorder(
				BorderFactory.createTitledBorder("Type d'enseignement"),
				BorderFactory.createEmptyBorder(5,5,5,5)));

		typeEns = new TypeEnseignementBL();
		list = new JList();
		refreshListe();
        
		JPanel commandBox = new JPanel();
		
        ajouter = new JButton ("Ajouter");
        ajouter.addActionListener(this);
        commandBox.add(ajouter);
        
        modifier= new JButton ("Modifier");
        modifier.addActionListener(this);
        commandBox.add(modifier);
        
        supprimer = new JButton ("Supprimer");
        supprimer.addActionListener(this);
        commandBox.add(supprimer);
                
        drawCommandBox(commandBox);
	}
	
	
	public int getIdSelectedItem(){
		return ((Record)list.getSelectedValue()).getId();
	}
	
	/**
	 * 
	 */
	public void refreshListe() {
		Vector<Record> listeRecord = new Vector<Record>();
		for(Record recordType : typeEns.getListeTypeEnseignement()) {
			listeRecord.add(recordType);
		}
		list.setListData(listeRecord);
        add(list);
	}

	/**
	 * Permet la suppression d'un type d'heure
	 */
	public void typeEnseignementUISupprimer(){

		int retour = JOptionPane.showConfirmDialog(
			    this,
			    "Êtes vous sûr de vouloir supprimer le type d'enseignement\n"+
			    " ?",
			    "Avertissement",
			    JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
		if (retour == JOptionPane.YES_OPTION) {
			TypeEnseignementBL typeASuppr = new TypeEnseignementBL(this.getIdSelectedItem());
			typeASuppr.supprimerTypeEnseignement();
		}		
	}
	
	public void loadSupprimerViewPane() {
		typeEnseignementUISupprimer();
		refreshListe();
	}
	
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if (e.getSource() == ajouter) {
			PanelEnseignementUIConsulter panel = new PanelEnseignementUIConsulter(AbstractViewPane.ViewMode.AJOUT, -1, this);
			panel.setVisible(true);
		}
		if (e.getSource() == modifier) {
			if (list.getSelectedIndex() != -1) {
				PanelEnseignementUIConsulter panel = new PanelEnseignementUIConsulter(AbstractViewPane.ViewMode.MODIFICATION, getIdSelectedItem(), this);
				panel.setVisible(true);
			}
		}
		if (e.getSource() == supprimer) {
			if (list.getSelectedIndex() != -1) {
				loadSupprimerViewPane();
			}
		}		
	}
}
